package comandos;

import java.util.ArrayList;

import model.Notificacion;
import model.Usuario;
import protocol.MensajeComando;
import server.ClienteHilo;
import server.model.Invitacion;
import server.services.InvitacionesService;

public class ObtenerNotificaciones implements ComandoServidor
{
	private Usuario usuario;
	
	public void ejecutar (ClienteHilo cliente)
	{
			try
			{
				this.usuario = (Usuario)cliente.getInput().readObject();
				
				/**
				 * 
				 * CODIGO DE LA BASE DE DATOS PARA OBTENER LAS NOTIFICACIONES
				 * 
				 */
				InvitacionesService servicioInvitaciones = new InvitacionesService();
				ArrayList<Invitacion> invitaciones = (ArrayList<Invitacion>) servicioInvitaciones.invitacionesPara(usuario);
				ArrayList<Notificacion>  notificaciones = new ArrayList<Notificacion>();
				Notificacion n;
				for(Invitacion i:invitaciones)
				{
					n = new Notificacion(i.getInvitador());
					n.setMensaje("Se ha recibido una solicitud de amistad de: " + i.getInvitador().getNombre() + " " + i.getInvitador().getApellido() + " " + "(" + i.getInvitador().getNick() + ")");
					notificaciones.add(n);
				}
					
				System.out.println("Amigos - Obteniendo solicitudes de amistad pendientes para <" + usuario.getNick()+">");
				//Le envio al cliente un mensaje indicando que se va enviar la lista de amigos
				cliente.getOutput().writeObject(new MensajeComando("obtener_notificaciones",0));
				cliente.getOutput().flush();
				
				//Le envio la lista de notificaciones
				cliente.getOutput().writeObject(notificaciones);
				cliente.getOutput().flush();
				
			}
			catch (Exception e)
			{
				e.printStackTrace();
				System.out.println("Problema al ejecutar el comando");
			}

	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
}
